import os
import shutil

# 永久删除目录中的所有文件和子目录
def clear_dir_and_file(output_dir):
    # 检查目录是否存在
    if os.path.exists(output_dir) and os.path.isdir(output_dir):
        # 遍历目录中的所有文件和子目录
        for filename in os.listdir(output_dir):
            file_path = os.path.join(output_dir, filename)
            try:
                if os.path.isfile(file_path) or os.path.islink(file_path):
                    os.unlink(file_path)  # 删除文件或符号链接
                elif os.path.isdir(file_path):
                    shutil.rmtree(file_path)  # 删除子目录及其内容
            except Exception as e:
                print(f'Failed to delete {file_path}. Reason: {e}')
    else:
        print(f"The directory {output_dir} does not exist.")


# 只删除文件而保留子目录
def clear_file(output_dir):
    """
    清空指定目录下的所有文件，但保留子目录。
    
    参数:
    output_dir (str): 需要清空文件的目录路径。
    
    返回:
    无返回值。
    """
    # 检查目录是否存在
    if os.path.exists(output_dir) and os.path.isdir(output_dir):
        # 遍历目录中的所有文件
        for filename in os.listdir(output_dir):
            file_path = os.path.join(output_dir, filename)
            try:
                # 如果是文件或符号链接，则删除
                if os.path.isfile(file_path) or os.path.islink(file_path):
                    os.unlink(file_path)  # 删除文件或符号链接
            except Exception as e:
                # 异常处理，打印删除失败的原因
                print(f'Failed to delete {file_path}. Reason: {e}')
    else:
        # 如果目录不存在，打印提示信息
        print(f"The directory {output_dir} does not exist.")




def generate_code_segments(output_dir):

    class_template = """
    else if (tableName.equals("{class_name}")){{
        {class_name} actval = new {class_name}();

        actval.setEquipmentNumber(equipmentNumber);
        actval.setTestformitemNumber(testFormItemNumber);
        actval.setActualTime(time);

        actval.setConsignDpt(actualTestValue.getConsignDpt());
        actval.setEquipmentName(actualTestValue.getEquipmentName());
        actval.setEquipmentTWName(actualTestValue.getEquipmentTWName());
        actval.setSampleModel(actualTestValue.getSampleModel());
        actval.setSampleNumber(actualTestValue.getSampleNumber());
        actval.setTestCondition(actualTestValue.getTestCondition());
        actval.setTestFormItemName(actualTestValue.getTestFormItemName());
        actval.setTestFormNumber(actualTestValue.getTestFormNumber());

        actval.setVarStr1(actualTestValue.getVarStr1());
        actval.setVarStr2(actualTestValue.getVarStr2());
        actval.setVarStr3(actualTestValue.getVarStr3());
        actval.setVarStr4(actualTestValue.getVarStr4());
        actval.setVarStr5(actualTestValue.getVarStr5());
        actval.setVarStr6(actualTestValue.getVarStr6());
        actval.setVarStr7(actualTestValue.getVarStr7());
        actval.setVarStr8(actualTestValue.getVarStr8());
        actval.setVarStr9(actualTestValue.getVarStr9());
        actval.setVarStr10(actualTestValue.getVarStr10());
        actval.setVarStr11(actualTestValue.getVarStr11());
        actval.setVarStr12(actualTestValue.getVarStr12());
        actval.setVarStr13(actualTestValue.getVarStr13());
        actval.setVarStr14(actualTestValue.getVarStr14());
        actval.setVarStr15(actualTestValue.getVarStr15());
        actval.setVarStr16(actualTestValue.getVarStr16());
        actval.setVarStr17(actualTestValue.getVarStr17());
        actval.setVarStr18(actualTestValue.getVarStr18());
        actval.setVarStr19(actualTestValue.getVarStr19());
        actval.setVarStr20(actualTestValue.getVarStr20());

        influxDBService.create(actval);
    }}
    """

    # 清空目录中的文件
    clear_file(output_dir)

    # 存放所有的代码片段
    file_contents = []

    # 生成48个代码片段
    for i in range(2, 50):  # 修改为生成从2到49的代码片段
        class_name = f"ActValYsj{i}"
        file_content = class_template.format(class_name=class_name)
        
        # 添加代码片段
        file_contents.append(file_content)

    # 将所有代码片段写入文件
    with open(os.path.join(output_dir, "generated_classes.java"), "w", encoding="utf-8") as file:
        # 拼接所有代码片段
        file.write("\n".join(file_contents))

    print("类已成功生成并保存到 {} 目录中。".format(output_dir))


def main():
    # 创建目标目录
    output_dir = "d:/a"
    os.makedirs(output_dir, exist_ok=True)

    # 生成代码片段
    generate_code_segments(output_dir)

if __name__ == "__main__":
    main()

